package com.jshoperxms.controller.mall.backstage.base;

import org.hibernate.criterion.Order;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * Created by sdywcd on 16/9/2.
 * Des:公共搜索接口
 */
public interface IBaseCtrl<T> {


    /**
     * 保存
     * @param rq
     * @return
     */
    ResponseEntity save(@RequestBody T rq) throws ParseException;

    /**
     * 查询一条记录
     * @param rq
     * @return
     */
    ResponseEntity find(@RequestBody T rq);

    /**
     * 删除记录
     * @param rq
     * @return
     */
    ResponseEntity del(@RequestBody T rq);

    /**
     * 更新
     * @param rq
     * @return
     */
    ResponseEntity update(@RequestBody T rq) throws ParseException;

    /**
     * 查询所有
     * @return
     */
    ResponseEntity findAll();

    /**
     * 查询列表
     * @param searchModel
     * @param search
     * @param ordervalue
     * @param ordertype
     */
    ResponseEntity findByPage(SearchModel searchModel, @RequestParam("search[value]") String search, @RequestParam("order[0][column]") String ordervalue, @RequestParam("order[0][dir]") String ordertype);


    /**
     * 自定义搜索
     * @param searchModel
     * @param search
     * @param ordervalue
     * @param ordertype
     */
    void findCustomSearch(SearchModel searchModel,String search,String ordervalue,String ordertype);


    /**
     * 控件过滤搜索
     * @param searchModel
     * @param search
     */
    void filterSearch(SearchModel searchModel,String search);

    /**
     * 默认查询
     * @param searchModel
     * @param ordervalue
     * @param ordertype
     */
    void findDefaultAll(SearchModel searchModel,String ordervalue,String ordertype);

    /**
     * 处理控件列表显示
     * @param list
     */
    void processPageList(List<T>list);

    /**
     * 检查是否重复
     * 此方法不要求必须实现
     * @param str
     * @return
     */
    boolean checkDuplicates(String str);



}
